package com.itheima.thread_demo;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

/*
    实现线程的第三种方式 : 实现Callable接口
 */
public class MyThread03 {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        // 创建Callable的实现类对象 , 任务类
        MyCallable callable = new MyCallable();
        // 桥梁
        FutureTask<String> task = new FutureTask<>(callable);
        // 创建线程对象
        Thread t = new Thread(task);// 构造方法中需要一个Runnable接口的实现类对象
        // 执行线程
        t.start();
        // 使用FutureTask对象调用get方法 ,获取线程执行完毕的结果
        System.out.println(task.get());// 具备阻塞作用!

        System.out.println("嘿嘿");
    }
}

// 第一步 : 自己写一个类 , 实现Callable接口
class MyCallable implements Callable<String> {
    // call方法的返回值 , 线程执行完毕返回的结果
    @Override
    public String call() throws Exception {
        for (int i = 1; i <= 100; i++) {
            System.out.println("给小花的第" + i + "只花");
        }
        return "答应!";
    }
}

